In various secure storage systems a host exchanges data with one or more storage devices. Methods for securing the interface between the host and the storage devices are known in the art. For example, U.S. Patent Application Publication 2013/0262880, whose disclosure is incorporated herein by reference, describes a memory access circuit and a corresponding method. The memory access circuit includes a cryptographic block in communication with a memory that encrypts data of a data block on a block basis. The memory access circuit also includes a fault injection block configured to inject faults to the data in the data block. The memory access circuit further includes a data scrambler and an address scrambler. The data scrambler is configured to scramble data in the memory by shuffling data bits within the data block in a plurality of rounds and mash the shuffled data bits with random data. The address scrambler is configured to distribute the scrambled data across the memory. A memory system including the memory access circuit is also disclosed to implement the corresponding method.
As another example, U.S. Patent Application Publication 2011/0283115, whose disclosure is incorporated herein by reference, describes a method for generating final software code, which is resistant to reverse engineering analysis, from an initial software code, which is executed by a processor that directly handles data of maximal size of M bits. Generating the final software code comprises the steps of: (i) building a conversion table whose input comprises one instruction and its output comprises a plurality of equivalent instructions or sets of instructions, (ii) splitting the input data into a plurality of segments, each segment having a random length not exceeding M, and (iii) for each instruction of a block of instructions, selecting pseudo-randomly an equivalent instruction or set of instructions using the conversion table so as to obtain an equivalent block of instructions, and appending the plurality of equivalent blocks of instructions to obtain the final software code.